import 'package:flutter/material.dart';

class MyElevatedButton extends StatelessWidget {
  final String text;
  final VoidCallback onPressed;

  /// 背景色（默认系统颜色）
  final Color? backgroundColor;

  /// 字体颜色（默认系统颜色）
  final Color? textColor;

  /// 字体大小（默认系统字体大小）
  final double? fontSize;

  /// 宽度（固定优先）
  final double? width;

  /// 屏幕宽度百分比（如 20 表示 20% 屏幕宽度）
  final double? widthPercent;

  /// 高度（不设置使用系统高度）
  final double? height;

  /// 圆角（不设置使用系统默认圆角）
  final double? borderRadius;

  const MyElevatedButton({
    super.key,
    required this.text,
    required this.onPressed,
    this.backgroundColor,
    this.textColor,
    this.fontSize,
    this.width,
    this.widthPercent,
    this.height,
    this.borderRadius,
  });

  @override
  Widget build(BuildContext context) {
    final screenWidth = MediaQuery.of(context).size.width;

    // 计算宽度：优先使用 width，其次 widthPercent
    final double? finalWidth = width ??
        (widthPercent != null ? screenWidth * (widthPercent! / 100) : null);

    return Center(
      child: SizedBox(
        width: finalWidth,
        height: height,
        child: ElevatedButton(
          onPressed: onPressed,
          style: ElevatedButton.styleFrom(
            // 背景色（未设置则使用系统默认）
            backgroundColor: backgroundColor,
            // 形状
            shape: RoundedRectangleBorder(
              borderRadius: BorderRadius.circular(borderRadius ?? 8),
            ),
            // 最小高度（若 height 为 null，则不设置）
            minimumSize: height != null ? Size(finalWidth ?? 0, height!) : null,
          ),
          child: Text(
            text,
            textAlign: TextAlign.center,
            style: TextStyle(
              fontSize: fontSize,   // 字体大小（可选）
              color: textColor,     // 字体颜色（可选）
            ),
          ),
        ),
      ),
    );
  }
}
